package com.mx102.bandyta;

import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;

public class Walec {

	private Texture spinTex1,spinTex2,spinTex3;
	private TextureRegion[] walecAnim;
	
	private Texture symboleTex;
	private TextureRegion[][] symbol;
	private int x, y;
	private boolean animuj;
	private boolean hamuj;
	
	private float time;

	private int[] wynik;
	
	private int n = 0;

	public Walec(AssetManager manager,int x, int y) {
		

		this.x = x;
		this.y = y;
		
		// Wczytanie symboli statycznych
		symboleTex= manager.get("symbole.png",Texture.class);
		symbol = new TextureRegion[9][6];
		for (int i = 0; i < 9; i++) {
			symbol[i][0] = new TextureRegion(symboleTex, i * 100, 0, 100, 56);
			symbol[i][1] = new TextureRegion(symboleTex, i * 100, 56, 100, 66);
			symbol[i][2] = new TextureRegion(symboleTex, i * 100, 122, 100, 55);
			symbol[i][3] = new TextureRegion(symboleTex, i * 100, 177+0, 100, 56);
			symbol[i][4] = new TextureRegion(symboleTex, i * 100, 177+56, 100, 66);
			symbol[i][5] = new TextureRegion(symboleTex, i * 100, 177+122, 100, 55);
		}
		
		// Wczytanie animacji bebna podzielonej na 3 tekstury
		spinTex1 =  manager.get("walec_1.png",Texture.class);
		spinTex2 =  manager.get("walec_2.png",Texture.class);
		spinTex3 =  manager.get("walec_3.png",Texture.class);
		walecAnim = new TextureRegion[30];
		for (int i = 0; i < 10; i++) {
			walecAnim[i] = new TextureRegion(spinTex1, i * 100, 0, 100, 177);
		}
		for (int i = 0; i < 10; i++) {
			walecAnim[i+10] = new TextureRegion(spinTex2, i * 100, 0, 100, 177);
		}
		for (int i = 0; i < 10; i++) {
			walecAnim[i+20] = new TextureRegion(spinTex3, i * 100, 0, 100, 177);
		}
		

		animuj = false;
		hamuj=false;
		wynik=new int[3];
		
		// Ustawienie poczatkowej klatki tak aby animacja bebna byla roznorodna
		n=(int) Math.round(Math.random()*30);

	}

	public void render(SpriteBatch sb,float delta) {
		
		// Animacja walca
		if (animuj) {
			sb.draw(walecAnim[n], x, y, 147, 260);
			time+=delta;
			if(time>0.03) { n++; time-=0.03; }
			if (n >= 30)
				n = 0;
		} 

		// Zahamowanie bebna
		if(hamuj) {
			time+=delta;
			
			sb.draw(symbol[wynik[0]][3], x, y+177, 147, 82);		
			sb.draw(symbol[wynik[1]][4], x, y+80, 147, 97);
			sb.draw(symbol[wynik[2]][5], x, y, 147, 81);		
			
			if(time>0.1) {
				time=0;
				hamuj=false;
				
			}
		}
		
		//Wyswietlenie statycznych symboli na walcu
		if(!animuj&&!hamuj){
			
			sb.draw(symbol[wynik[0]][0], x, y+177, 147, 82);
			sb.draw(symbol[wynik[1]][1], x, y+80, 147, 97);
			sb.draw(symbol[wynik[2]][2], x, y, 147, 81);
		}

	}
	
	public void start() {
		animuj=true;
		time=0;
		
	}
	
	public void wynik (int[] wynik){
		this.wynik=wynik;
	}
	
	public void stop(){	
		time=0;
		animuj=false;
		hamuj=true;
	}

}
